100 REM Hangman
110 REM By Walid Maalouli
120 REM April 1999
130 PRINT "Do you need instructions? (y/n)"
140 A$=KEY$:IF A$=""THEN 140
150 IF A$<>"y"THEN 210
160 PRINT "You have 7 attempts to guess":PAUSE
170 PRINT "the word. Press the spacebar":PAUSE
180 PRINT "to view your available letters":PAUSE
190 PRINT "then ENTER to return to the":PAUSE
200 PRINT "game. Good luck!":PAUSE
210 CALL CHAR(0,"0000001f1f000000")
220 CALL CHAR(1,"00000e11110e0000")
230 CALL CHAR(2,"0103051919050301")
240 CALL CHAR(3,"110b0d1919050301")
250 CALL CHAR(4,"110b0d19190d0b11")
260 CALL CHAR(5,"01011e")
270 CALL CHAR(6,"01011e00001e0101")
280 L$="abcdefghijklmnopqrstuvwxyz"
290 DISPLAY AT(13)BEEP ERASE ALL,"HANGMAN":PAUSE
300 RANDOMIZE:WLOC=INTRND(125)
310 RESTORE 620:FOR I=1 TO WLOC:READ W$:NEXT I
320 RESTORE 610
330 PRINT "Ready! Press ENTER to start...":PAUSE
340 FOR I=1 TO LEN(W$):PRINT "_";:NEXT I
350 DISPLAY AT(25)BEEP,"I";
360 A$=KEY$:IF A$=""THEN 360
370 IF A$=" "THEN GOSUB 540
380 IF ASC(A$)<97 OR ASC(A$)>122 THEN 360
390 T=POS(L$,A$,1):IF T>0 THEN L$=SEG$(L$,1,T-1)&"_"&SEG$(L$,T+1,LEN(L$)-T)
400 FOR I=1 TO LEN(W$)
410 IF F$(I)<>""THEN 450
420 IF A$=SEG$(W$,I,1)THEN 430 ELSE 450
430 DISPLAY AT(I)BEEP SIZE(-1),A$;:F$(I)=A$:COUNT=COUNT+1:FFLAG=1
440 IF COUNT=LEN(W$)THEN DISPLAY AT(23)BEEP,"Good job!":PAUSE:GOTO 510
450 NEXT I
460 IF FFLAG=1 THEN 500 ELSE HCOUNT=HCOUNT+1
470 IF HCOUNT=7 THEN DISPLAY AT(29)BEEP SIZE(1),CHR$(6) ELSE 490
480 DISPLAY AT(1)BEEP SIZE(15),"You are hanged!";:PAUSE:GOTO 510
490 READ P:DISPLAY AT(P)SIZE(1),CHR$(C):C=C+1:GOTO 360
500 FFLAG=0:GOTO 360
510 PRINT:PRINT "Play again? (y/n)";:ACCEPT AT(19)BEEP VALIDATE("yn"),A$
520 IF A$="n"THEN STOP ELSE C=0:FOR I=0 TO 9:F$(I)="":NEXT I
530 COUNT=0:FFLAG=0:HCOUNT=0:P=0:GOTO 280
540 PRINT:PRINT L$:PAUSE:RESTORE
550 FOR I=1 TO LEN(W$)
560 IF F$(I)=""THEN PRINT "_"; ELSE PRINT F$(I);
570 NEXT I
580 DISPLAY AT(25),"I";
590 IF P=0 THEN RETURN ELSE FOR I=0 TO C-1:READ P:DISPLAY AT(P),CHR$(I);:NEXT I
600 RETURN
610 DATA 26,27,28,28,28,29
620 DATA abdomen,afoul,aggregate,algebra,applaud
630 DATA beaker,behold,biocide,blandish,blueberry
640 DATA candid,cemetary,charbroil,cipher,confluence
650 DATA dander,debark,diabolic,drastic,dudgeon
660 DATA easel,eczema,effectual,ellipse,encroach
670 DATA facetious,ferment,fetish,fledgling,foretell
680 DATA gaiety,generic,ghost,gourmet,guttural
690 DATA habitable,heaven,hierarchy,homograph,hustle
700 DATA iceberg,illusion,imperial,inherent,itself
710 DATA jeopardy,joint,journal,juncture,juvenile
720 DATA kennel,kangaroo,kidney,knack,knowledge
730 DATA labor,league,lexicon,ligament,lozenge
740 DATA majesty,measly,microbe,module,multiply
750 DATA naive,needle,nipple,normality,nutritious
760 DATA obligate,offense,operate,orthodox,overcast
770 DATA pacify,peddle,pennant,phlegm,pinch
780 DATA quack,quarry,queer,quiescent,quotient
790 DATA rabble,rebuild,rhetorical,ripple,rumble
800 DATA saboteur,scarlet,secretary,shrapnel,solace
810 DATA tabernacle,tease,thing,tonnage,tractor
820 DATA ulcer,umpire,upgrade,useless,uttermost
830 DATA vacant,vehement,vibrate,voltage,vulture
840 DATA wadding,wedding,whale,windmill,worthy
850 DATA yak,yogurt,yoke,yawn,youth
860 DATA zany,zest,zodiac,zoom,zucchini